Instant Class

Java Technologies - জাভা টাইম প্যাকেজ (Java.time Package)
122
122

Java 8 এর পর, java.time প্যাকেজটি তারিখ এবং সময় সম্পর্কিত আধুনিক API সরবরাহ করে। এর মধ্যে Instant ক্লাসটি বিশেষভাবে UTC (Coordinated Universal Time) ভিত্তিক একটি নির্দিষ্ট সময় চিহ্নিত করার জন্য ব্যবহৃত হয়। এটি একটি স্ট্যাটিক টাইম স্ট্যাম্প হিসেবে কাজ করে যা epoch time (1970-01-01T00:00:00Z) থেকে সেকেন্ড বা ন্যানোসেকেন্ড পরিমাপ করে।

Instant ক্লাসের বৈশিষ্ট্য:

  • Instant ক্লাসটি time-stamp বা সঠিক সময়ের প্রতিনিধিত্ব করে যা epoch থেকে গণনা করা হয়। এটি milliseconds বা nanoseconds ভিত্তিক সময় প্রকাশ করতে সক্ষম।
  • এটি কোনো নির্দিষ্ট সময়ের জন্য টাইমজোন ধারণ করে না, শুধু UTC তে নির্ধারিত একটি সময়।
  • Instant ক্লাসের জন্য গুরুত্বপূর্ণ মেথডগুলি হলো now(), ofEpochSecond(), plus(), minus(), toString(), getEpochSecond(), ইত্যাদি।

Instant ক্লাসের ব্যবহার:

1. now() মেথড ব্যবহার করে বর্তমান সময় পাওয়া

Instant.now() মেথড ব্যবহার করে আপনি বর্তমান UTC সময় পেতে পারেন। এটি Instant অবজেক্ট তৈরি করে, যা বর্তমান সময়ের epoch second থেকে হিসাব করা হয়।

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Get the current time (current instant)
        Instant now = Instant.now();
        
        // Print the current instant
        System.out.println("Current Instant: " + now);
    }
}

আউটপুট:

Current Instant: 2024-12-23T12:15:30.123456Z

ব্যাখ্যা:

  • Instant.now() মেথডটি বর্তমান UTC সময় প্রদান করে, যা ISO-8601 ফরম্যাটে প্রিন্ট হয়।

2. ofEpochSecond() মেথড ব্যবহার করে সময় তৈরি করা

Instant.ofEpochSecond() মেথডটি epoch second থেকে Instant তৈরি করতে ব্যবহৃত হয়।

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Create Instant from epoch seconds
        Instant instant = Instant.ofEpochSecond(1627849200);  // Example epoch seconds (2021-08-01T00:00:00Z)
        
        // Print the created instant
        System.out.println("Instant from epoch second: " + instant);
    }
}

আউটপুট:

Instant from epoch second: 2021-08-01T00:00:00Z

ব্যাখ্যা:

  • Instant.ofEpochSecond(1627849200) মেথডে 1627849200 সেকেন্ড epoch time হিসেবে প্রদান করা হয়েছে, যা 2021 সালের 1 আগস্ট 00:00:00 UTC এর সমান।

3. plus() এবং minus() মেথড ব্যবহার করে সময় যোগ বা বিয়োগ করা

Instant ক্লাসে plus() এবং minus() মেথড ব্যবহার করে আপনি নির্দিষ্ট পরিমাণ সময় যোগ বা বিয়োগ করতে পারেন। এটি সময়ের সাথে কাজ করার জন্য খুবই উপকারী।

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Get the current instant
        Instant now = Instant.now();
        System.out.println("Current Instant: " + now);

        // Add 5 hours to the current instant
        Instant fiveHoursLater = now.plusSeconds(5 * 60 * 60);
        System.out.println("5 hours later: " + fiveHoursLater);

        // Subtract 2 days from the current instant
        Instant twoDaysEarlier = now.minusSeconds(2 * 24 * 60 * 60);
        System.out.println("2 days earlier: " + twoDaysEarlier);
    }
}

আউটপুট:

Current Instant: 2024-12-23T12:30:45.123456Z
5 hours later: 2024-12-23T17:30:45.123456Z
2 days earlier: 2024-12-21T12:30:45.123456Z

ব্যাখ্যা:

  • plusSeconds() মেথডের মাধ্যমে বর্তমান সময়ের সাথে 5 ঘণ্টা যোগ করা হয়েছে।
  • minusSeconds() মেথডের মাধ্যমে 2 দিন বিয়োগ করা হয়েছে।

4. toString() মেথড ব্যবহার করে Instant কে String এ রূপান্তর করা

toString() মেথড ব্যবহার করে Instant অবজেক্টকে স্ট্রিং ফরম্যাটে রূপান্তর করা যায়। এটি ISO-8601 স্ট্যান্ডার্ড ফরম্যাটে রূপান্তরিত হয়।

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Get the current instant
        Instant now = Instant.now();
        
        // Convert Instant to String
        String instantString = now.toString();
        System.out.println("Instant as String: " + instantString);
    }
}

আউটপুট:

Instant as String: 2024-12-23T12:45:30.123456Z

ব্যাখ্যা:

  • toString() মেথড Instant অবজেক্টকে ISO-8601 স্ট্যান্ডার্ড ফরম্যাটে রূপান্তর করে, যেমন 2024-12-23T12:45:30.123456Z

5. getEpochSecond() মেথড ব্যবহার করে epoch second বের করা

getEpochSecond() মেথড ব্যবহার করে আপনি Instant থেকে epoch time (সেকেন্ডে) বের করতে পারেন।

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Get the current instant
        Instant now = Instant.now();
        
        // Get epoch second
        long epochSecond = now.getEpochSecond();
        System.out.println("Epoch Second: " + epochSecond);
    }
}

আউটপুট:

Epoch Second: 1703657530

ব্যাখ্যা:

  • getEpochSecond() মেথডটি Instant অবজেক্ট থেকে epoch second বের করে, যা 1970-01-01T00:00:00Z থেকে গণনা করা সেকেন্ডের সংখ্যা।

  • Instant ক্লাস UTC সময়ের ভিত্তিতে একটি নির্দিষ্ট সময় চিহ্নিত করে এবং epoch second বা nanoseconds ভিত্তিক সময় ব্যবস্থাপনা করে।
  • এটি immutable (অপরিবর্তনীয়) এবং টাইমজোনের সাথে সম্পর্কিত নয়, শুধুমাত্র UTC সময় চিহ্নিত করে।
  • now(), ofEpochSecond(), plus(), minus(), toString(), এবং getEpochSecond() সহ অনেক মেথড Instant ক্লাসে উপলব্ধ যা সময় এবং তারিখের সাথে কার্যকরীভাবে কাজ করতে সহায়তা করে।

Instant ক্লাসটি সময়ের পরিমাপ এবং টাইমস্ট্যাম্প সম্পর্কিত কাজের জন্য খুবই গুরুত্বপূর্ণ, বিশেষত যখন আপনি epoch time বা UTC ভিত্তিক সময় ব্যবস্থাপনা করতে চান।

Content added By

Instant কি এবং এর ভূমিকা

101
101

Instant ক্লাসটি Java 8-এ java.time প্যাকেজের অংশ হিসাবে প্রবর্তিত হয়েছে এবং এটি UTC (Coordinated Universal Time) বা Epoch সময়ের ভিত্তিতে পূর্ণ সূক্ষ্মতার সাথে সময় (Timestamp) প্রতিনিধিত্ব করে। Instant ক্লাসটি টাইমজোন এবং লোকাল টাইমের সাথে সম্পর্কিত নয়, বরং এটি সময়ের নির্দিষ্ট মুহূর্ত (moment) বা ইভেন্টের প্রতিনিধিত্ব করে, যা একটি নির্দিষ্ট মুহূর্তের সাথে সম্পর্কিত সেকেন্ড এবং ন্যানোসেকেন্ড গণনা করে।

Instant ক্লাসের ভূমিকা:

  • Instant ক্লাসটি মূলত টাইমস্ট্যাম্প (timestamp) বা Unix epoch time প্রতিনিধিত্ব করে, যা 1970 সালের 1 জানুয়ারি, 00:00:00 UTC থেকে সেকেন্ড এবং ন্যানোসেকেন্ডের পরিমাণ গণনা করে।
  • এটি UTC তে সুনির্দিষ্ট সময় (একটি মুহূর্ত) প্রতিনিধিত্ব করতে ব্যবহৃত হয়।
  • Instant ক্লাসটি সাধারণত লগ, ট্রানজেকশন, বা সিস্টেমের সময় সিলোচুক্তির জন্য ব্যবহৃত হয়, যেখানে টাইমস্ট্যাম্পের ভিত্তিতে ঘটনার বিশ্লেষণ বা লগ করা হয়।

Instant ক্লাসের ব্যবহার:

Instant ক্লাসের মাধ্যমে আপনি একটি নির্দিষ্ট সময়ে পৌঁছানোর জন্য সময় যোগ বা কমানোর কাজ করতে পারেন, এবং এটি অন্যান্য সময়ের ক্লাসের সাথে তুলনা করা যায়। এটি টাইমস্ট্যাম্প হিসেবে ডেটা স্টোর করতে ব্যবহৃত হতে পারে, বিশেষ করে যখন নির্দিষ্ট সময়ের সাথে সিস্টেমের ইভেন্ট লগ করতে হয়।

Instant ক্লাসের প্রধান মেথডসমূহ:

  1. now(): বর্তমান সময়কে Instant হিসেবে পেতে ব্যবহৃত হয়।
  2. ofEpochSecond(long epochSecond): নির্দিষ্ট epoch second থেকে Instant তৈরি করে।
  3. plusSeconds(long seconds): নির্দিষ্ট সেকেন্ড যোগ করে একটি নতুন Instant তৈরি করে।
  4. minusSeconds(long seconds): নির্দিষ্ট সেকেন্ড বিয়োগ করে একটি নতুন Instant তৈরি করে।
  5. getEpochSecond(): Instant এর epoch second (সেকেন্ড) রিটার্ন করে।
  6. toEpochMilli(): Instant কে মিলিসেকেন্ডে কনভার্ট করে।

Instant এর উদাহরণ:

1. now() Method: বর্তমান সময়ের Instant তৈরি করা

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Get the current Instant
        Instant now = Instant.now();
        System.out.println("Current Instant: " + now);
    }
}

Output:

Current Instant: 2024-12-23T10:15:30.123456Z

ব্যাখ্যা:

  • Instant.now() বর্তমান সময়ের UTC ভিত্তিক Instant অবজেক্ট রিটার্ন করে, যা সেকেন্ড এবং ন্যানোসেকেন্ডের সঠিক সময় প্রদান করে।

2. ofEpochSecond(long epochSecond) Method: Epoch সেকেন্ড থেকে Instant তৈরি করা

import java.time.Instant;

public class InstantEpochExample {
    public static void main(String[] args) {
        // Create an Instant from a specific epoch second
        Instant instant = Instant.ofEpochSecond(1609459200); // Unix epoch: 2021-01-01T00:00:00Z
        System.out.println("Instant from Epoch Second: " + instant);
    }
}

Output:

Instant from Epoch Second: 2021-01-01T00:00:00Z

ব্যাখ্যা:

  • Instant.ofEpochSecond(1609459200) Unix epoch টাইম (যা 2021 সালের জানুয়ারি 1 তারিখে পরিবর্তিত হয়) থেকে Instant তৈরি করে।

3. plusSeconds(long seconds) Method: সেকেন্ড যোগ করা

import java.time.Instant;

public class InstantPlusSecondsExample {
    public static void main(String[] args) {
        Instant now = Instant.now();
        System.out.println("Current Instant: " + now);
        
        // Add 100 seconds to the current Instant
        Instant futureInstant = now.plusSeconds(100);
        System.out.println("Instant after 100 seconds: " + futureInstant);
    }
}

Output:

Current Instant: 2024-12-23T10:15:30.123456Z
Instant after 100 seconds: 2024-12-23T10:17:10.123456Z

ব্যাখ্যা:

  • plusSeconds(100) মেথডটি বর্তমান Instant এর সাথে 100 সেকেন্ড যোগ করে এবং একটি নতুন Instant তৈরি করে।

4. minusSeconds(long seconds) Method: সেকেন্ড বিয়োগ করা

import java.time.Instant;

public class InstantMinusSecondsExample {
    public static void main(String[] args) {
        Instant now = Instant.now();
        System.out.println("Current Instant: " + now);
        
        // Subtract 50 seconds from the current Instant
        Instant pastInstant = now.minusSeconds(50);
        System.out.println("Instant before 50 seconds: " + pastInstant);
    }
}

Output:

Current Instant: 2024-12-23T10:15:30.123456Z
Instant before 50 seconds: 2024-12-23T10:14:40.123456Z

ব্যাখ্যা:

  • minusSeconds(50) মেথডটি বর্তমান Instant থেকে 50 সেকেন্ড বিয়োগ করে একটি নতুন Instant তৈরি করে।

5. toEpochMilli() Method: Instant কে মিলিসেকেন্ডে কনভার্ট করা

import java.time.Instant;

public class InstantToEpochMilliExample {
    public static void main(String[] args) {
        Instant now = Instant.now();
        System.out.println("Current Instant: " + now);
        
        // Convert Instant to epoch milliseconds
        long epochMilli = now.toEpochMilli();
        System.out.println("Epoch Milliseconds: " + epochMilli);
    }
}

Output:

Current Instant: 2024-12-23T10:15:30.123456Z
Epoch Milliseconds: 1703356530123

ব্যাখ্যা:

  • toEpochMilli() মেথডটি Instant কে মিলিসেকেন্ডে রূপান্তর করে, যা epoch time হিসাবে পরিচিত।

Instant এর প্রধান সুবিধা:

  1. UTC ভিত্তিক সময়:
    • Instant ইউটিসি (UTC) ভিত্তিক সময় প্রতিনিধিত্ব করে এবং এটি সময় এবং তারিখের কাজ সঠিকভাবে করতে সহায়তা করে, যেহেতু এটি টাইমজোন ইস্যু থেকে মুক্ত থাকে।
  2. টাইমস্ট্যাম্প:
    • Instant টাইমস্ট্যাম্প হিসেবে ব্যবহৃত হতে পারে, যেখানে কোনো নির্দিষ্ট মুহূর্তের সাথে সম্পর্কিত সেকেন্ড এবং ন্যানোসেকেন্ডের পরিমাণ পাওয়া যায়।
  3. পারফরম্যান্স:
    • যেহেতু Instant শুধুমাত্র সেকেন্ড এবং ন্যানোসেকেন্ড প্রতিনিধিত্ব করে, এটি LocalDateTime বা ZonedDateTime এর তুলনায় অনেক দ্রুত এবং কম মেমরি ব্যবহৃত হয়।
  4. টাইমজোন নিরপেক্ষ:
    • Instant টাইমজোন সম্পর্কিত তথ্য ধারণ করে না, এবং এটি পৃথিবীর যে কোনো জায়গায় একই সময় প্রতিনিধিত্ব করবে।

  • Instant ক্লাসটি UTC-based timestamp বা Unix epoch time প্রতিনিধিত্ব করে এবং এটি সময় এবং তারিখের সঠিক মুহূর্ত ম্যানেজ করতে ব্যবহৃত হয়।
  • এটি Instant.now(), plusSeconds(), minusSeconds(), এবং toEpochMilli() এর মতো মেথডের মাধ্যমে সময় যোগ বা বিয়োগ এবং টাইমস্ট্যাম্প হিসাব করতে ব্যবহৃত হয়।
  • এটি টাইমজোন থেকে নির্দিষ্ট সময়ের হিসাব এবং গ্লোবাল টাইম সিস্টেমে কাজ করার জন্য খুবই উপকারী।
Content added By

Epoch Time এবং Instant এর মাধ্যমে নির্দিষ্ট মুহূর্তের কাজ

76
76

Instant এবং Epoch Time হল Java 8 থেকে java.time প্যাকেজে পরিচিত কিছু গুরুত্বপূর্ণ সময় সম্পর্কিত ধারণা। Instant ক্লাস এবং Epoch Time (Unix Time) সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে, যা UTC (Coordinated Universal Time) থেকে সেকেন্ড এবং ন্যানোসেকেন্ডের হিসাব অনুযায়ী নির্ধারিত হয়।

1. Epoch Time (Unix Time)

Epoch Time বা Unix Time হলো 1970 সালের জানুয়ারির 1 তারিখ (00:00:00 UTC) থেকে শুরু হওয়া সেকেন্ড এবং ন্যানোসেকেন্ডের সংখ্যা। এটি পৃথিবীজুড়ে কম্পিউটার সিস্টেমে সময় ট্র্যাক করার একটি সাধারণ পদ্ধতি। সাধারণত এটি সেকেন্ড হিসেবেই ব্যবহৃত হয় (যদিও কিছু সিস্টেম ন্যানোসেকেন্ড পর্যন্ত হিসেব করে থাকে)।

2. Instant ক্লাস:

Instant ক্লাসটি java.time প্যাকেজে একটি নির্দিষ্ট সময় মুহূর্তের প্রতিনিধিত্ব করে। এটি UTC টাইমজোনে একটি নির্দিষ্ট মুহূর্তের epoch second (যা 1970 সালের জানুয়ারি 1 থেকে গণনা শুরু হয়) এবং nanosecond হিসেবে সময় ধারণ করে।

Instant এর ফিচারস:

  • Instant মূলত ইউনিভার্সাল সময় (UTC) দিয়ে কাজ করে।
  • এটি শুধুমাত্র একটি নির্দিষ্ট মুহূর্তের প্রতিনিধিত্ব করে, কোনো টাইমজোন বা স্থানীয় সময় ধারণ করে না।
  • Instant কখনো টাইমজোন নির্ভরশীল নয়, তাই এটি ZonedDateTime বা LocalDateTime এর তুলনায় একটি নির্দিষ্ট সময় মুহূর্তের একটি অপরিবর্তনীয় রেফারেন্স।

Instant ক্লাসের ব্যবহার:

  • Instant.now() - বর্তমান সময়ের একটি Instant অবজেক্ট তৈরি করে।
  • Instant.ofEpochSecond() - এক্সেপ্ট সেকেন্ড থেকে Instant তৈরি করে।
  • Instant.ofEpochMilli() - মিলিসেকেন্ড থেকে Instant তৈরি করে।
  • Instant.plus() এবং Instant.minus() - সময় যোগ এবং বিয়োগ করার জন্য।

Instant দিয়ে নির্দিষ্ট সময় কাজ করা

Example 1: Instant.now()

Instant.now() মেথডটি বর্তমান সময়ের Instant অবজেক্ট তৈরি করে যা epoch second এবং nanosecond হিসেবে নির্দিষ্ট।

import java.time.Instant;

public class InstantNowExample {
    public static void main(String[] args) {
        // Get current time as Instant
        Instant now = Instant.now();
        System.out.println("Current Instant: " + now);
    }
}

Output:

Current Instant: 2024-12-23T09:15:30.123456789Z

ব্যাখ্যা:

  • Instant.now() বর্তমান সময় এবং UTC টাইমজোনে একটি Instant অবজেক্ট তৈরি করে।

Example 2: Instant.ofEpochSecond()

Instant.ofEpochSecond() মেথডটি epoch second (1970 সালের জানুয়ারির 1 তারিখ থেকে সেকেন্ড হিসাবে পরিমাপ করা) থেকে একটি Instant তৈরি করে।

import java.time.Instant;

public class InstantEpochExample {
    public static void main(String[] args) {
        // Create Instant from epoch second
        Instant instant = Instant.ofEpochSecond(1609459200);  // January 1, 2021 00:00:00 UTC
        System.out.println("Instant from epoch second: " + instant);
    }
}

Output:

Instant from epoch second: 2021-01-01T00:00:00Z

ব্যাখ্যা:

  • Instant.ofEpochSecond(1609459200) ব্যবহার করে 2021 সালের জানুয়ারি 1 তারিখ, 00:00:00 UTC সময়কে Instant অবজেক্ট হিসেবে তৈরি করা হয়েছে। এখানে 1609459200 হলো Unix epoch থেকে 2021-01-01T00:00:00 এর সেকেন্ড।

Example 3: Instant.ofEpochMilli()

Instant.ofEpochMilli() মেথডটি epoch milliseconds (1970 সালের জানুয়ারির 1 তারিখ থেকে মিলিসেকেন্ড হিসাবে পরিমাপ করা) থেকে একটি Instant তৈরি করে।

import java.time.Instant;

public class InstantEpochMilliExample {
    public static void main(String[] args) {
        // Create Instant from epoch milliseconds
        Instant instant = Instant.ofEpochMilli(1609459200000L); // January 1, 2021 00:00:00 UTC
        System.out.println("Instant from epoch milliseconds: " + instant);
    }
}

Output:

Instant from epoch milliseconds: 2021-01-01T00:00:00Z

ব্যাখ্যা:

  • Instant.ofEpochMilli(1609459200000L) ব্যবহার করে 2021 সালের জানুয়ারি 1 তারিখ, 00:00:00 UTC সময়কে Instant অবজেক্ট হিসেবে তৈরি করা হয়েছে। এখানে 1609459200000L হলো Unix epoch থেকে 2021-01-01T00:00:00 এর মিলিসেকেন্ড।

Example 4: Adding and Subtracting Time from Instant

Instant এ সময় যোগ বা বিয়োগ করতে plus() এবং minus() মেথড ব্যবহার করা হয়।

import java.time.Instant;

public class InstantPlusMinusExample {
    public static void main(String[] args) {
        // Get current time as Instant
        Instant now = Instant.now();
        System.out.println("Current Instant: " + now);
        
        // Add 2 hours to the current Instant
        Instant futureTime = now.plusSeconds(2 * 60 * 60);  // Adding 2 hours (in seconds)
        System.out.println("Future Time (after 2 hours): " + futureTime);
        
        // Subtract 3 days from the current Instant
        Instant pastTime = now.minusSeconds(3 * 24 * 60 * 60);  // Subtracting 3 days (in seconds)
        System.out.println("Past Time (3 days ago): " + pastTime);
    }
}

Output:

Current Instant: 2024-12-23T10:30:15.123456789Z
Future Time (after 2 hours): 2024-12-23T12:30:15.123456789Z
Past Time (3 days ago): 2024-12-20T10:30:15.123456789Z

ব্যাখ্যা:

  • plusSeconds(2 * 60 * 60) 2 ঘণ্টা যোগ করেছে, এবং minusSeconds(3 * 24 * 60 * 60) 3 দিন বিয়োগ করেছে।

Instant এর ভূমিকা এবং ব্যবহার

  • Time Representation: Instant ক্লাসটি UTC টাইমজোনে সময়ের একটি নির্দিষ্ট মুহূর্ত প্রতিনিধিত্ব করে।
  • Epoch Time: এটি epoch second এবং nanosecond থেকে সময় নির্ধারণ করে।
  • Timestamping: সাধারণত এটি টেম্পোরাল ডেটাবেসের timestamp হিসাবে ব্যবহৃত হয়।
  • Time Arithmetic: Instant ব্যবহার করে সেকেন্ড বা মিলিসেকেন্ডে সময় যোগ বা বিয়োগ করা যায়, যা সময়ের নির্দিষ্ট মুহূর্তের জন্য উপযোগী।

  • Instant ক্লাসটি সময়ের একটি নির্দিষ্ট মুহূর্তকে UTC টাইমজোনে প্রতিনিধিত্ব করে।
  • এটি epoch time (Unix time) এবং nanosecond precision সহ সময় পরিচালনা করতে সাহায্য করে।
  • Instant কে টাইমজোন নির্ধারণ করতে ZonedDateTime বা OffsetDateTime এর সাথে ব্যবহার করা যেতে পারে, তবে এটি নিজে কোন টাইমজোন ধারণ করে না।
Content added By

Instant কে ZonedDateTime বা LocalDateTime এ রূপান্তর করা

134
134

Instant, ZonedDateTime এবং LocalDateTime হল java.time প্যাকেজের গুরুত্বপূর্ণ ক্লাস। Instant একটি নির্দিষ্ট সময়ের মুহূর্ত (epoch time) ধারণ করে এবং UTC (Coordinated Universal Time) সময় অঞ্চলে সেটি প্রতিনিধিত্ব করে। অন্যদিকে, ZonedDateTime এবং LocalDateTime নির্দিষ্ট সময় অঞ্চলের সাথে বা নির্দিষ্ট সময় অঞ্চল ছাড়া স্থানীয় সময় ধারণ করে।

যেহেতু Instant একটি নির্দিষ্ট সময়কে epoch second হিসেবে রেকর্ড করে, তাই এটি ZonedDateTime বা LocalDateTime এ রূপান্তর করার জন্য কিছু অতিরিক্ত তথ্যের প্রয়োজন, যেমন সময় অঞ্চল।

1. Instant থেকে ZonedDateTime এ রূপান্তর

Instant কে ZonedDateTime এ রূপান্তর করতে ZoneId (যেমন ZoneId.of("Asia/Kolkata")) ব্যবহার করা হয়। এটি Instant কে একটি নির্দিষ্ট সময় অঞ্চলের স্থানীয় সময়ে রূপান্তরিত করে।

উদাহরণ: Instant কে ZonedDateTime এ রূপান্তর করা

import java.time.*;

public class InstantToZonedDateTime {
    public static void main(String[] args) {
        // Get the current instant (UTC time)
        Instant instant = Instant.now();
        System.out.println("Current Instant: " + instant);

        // Convert Instant to ZonedDateTime with specific timezone
        ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Asia/Kolkata"));
        System.out.println("ZonedDateTime in Asia/Kolkata: " + zonedDateTime);
    }
}

আউটপুট:

Current Instant: 2024-12-23T08:15:45.678Z
ZonedDateTime in Asia/Kolkata: 2024-12-23T13:45:45.678+05:30[Asia/Kolkata]

ব্যাখ্যা:

  • Instant.now(): এটি UTC সময়ে বর্তমান মুহূর্ত প্রদান করে।
  • instant.atZone(ZoneId.of("Asia/Kolkata")): Instant কে Asia/Kolkata সময় অঞ্চলের স্থানীয় সময়ে রূপান্তরিত করা হয়।

2. Instant থেকে LocalDateTime এ রূপান্তর

LocalDateTime শুধুমাত্র স্থানীয় সময় ধারণ করে এবং এতে কোনো সময় অঞ্চল নেই। তাই Instant কে LocalDateTime এ রূপান্তর করার জন্য একটি সময় অঞ্চল প্রদান করতে হবে। ZonedDateTime এর সাথে toLocalDateTime() মেথড ব্যবহার করে আপনি Instant কে LocalDateTime এ রূপান্তর করতে পারেন।

উদাহরণ: Instant কে LocalDateTime এ রূপান্তর করা

import java.time.*;

public class InstantToLocalDateTime {
    public static void main(String[] args) {
        // Get the current instant (UTC time)
        Instant instant = Instant.now();
        System.out.println("Current Instant: " + instant);

        // Convert Instant to ZonedDateTime with specific timezone (Asia/Kolkata)
        ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Asia/Kolkata"));

        // Convert ZonedDateTime to LocalDateTime (without time zone)
        LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
        System.out.println("LocalDateTime in Asia/Kolkata: " + localDateTime);
    }
}

আউটপুট:

Current Instant: 2024-12-23T08:30:45.678Z
LocalDateTime in Asia/Kolkata: 2024-12-23T13:30:45.678

ব্যাখ্যা:

  • instant.atZone(ZoneId.of("Asia/Kolkata")): Instant কে Asia/Kolkata সময় অঞ্চলের সাথে ZonedDateTime এ রূপান্তর করা হয়েছে।
  • zonedDateTime.toLocalDateTime(): তারপর ZonedDateTime থেকে LocalDateTime এ রূপান্তর করা হয়েছে। এখানে LocalDateTime এ সময় অঞ্চল তথ্য হারিয়ে গেছে, এবং এটি শুধুমাত্র স্থানীয় সময় ধারণ করে।

3. ZonedDateTime এবং LocalDateTime থেকে Instant এ রূপান্তর

আপনি ZonedDateTime বা LocalDateTime থেকে Instant এ রূপান্তর করতে পারেন।

  • ZonedDateTime.toInstant(): এটি ZonedDateTime থেকে Instant এ রূপান্তর করে।
  • LocalDateTime.atZone(): এটি LocalDateTime কে ZonedDateTime এ রূপান্তর করে এবং পরে toInstant() ব্যবহার করে Instant তৈরি করতে হয়।

উদাহরণ: ZonedDateTime থেকে Instant এ রূপান্তর

import java.time.*;

public class ZonedDateTimeToInstant {
    public static void main(String[] args) {
        // Get the current ZonedDateTime with a specific time zone
        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
        System.out.println("ZonedDateTime in New York: " + zonedDateTime);

        // Convert ZonedDateTime to Instant
        Instant instant = zonedDateTime.toInstant();
        System.out.println("Instant from ZonedDateTime: " + instant);
    }
}

আউটপুট:

ZonedDateTime in New York: 2024-12-23T03:45:00-05:00[America/New_York]
Instant from ZonedDateTime: 2024-12-23T08:45:00Z

ব্যাখ্যা:

  • ZonedDateTime.toInstant(): এটি ZonedDateTime কে UTC টাইমে একটি Instant এ রূপান্তরিত করেছে।

উদাহরণ: LocalDateTime থেকে Instant এ রূপান্তর

import java.time.*;

public class LocalDateTimeToInstant {
    public static void main(String[] args) {
        // Get the current LocalDateTime
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("LocalDateTime: " + localDateTime);

        // Convert LocalDateTime to ZonedDateTime with a specific time zone
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Kolkata"));

        // Convert ZonedDateTime to Instant
        Instant instant = zonedDateTime.toInstant();
        System.out.println("Instant from LocalDateTime: " + instant);
    }
}

আউটপুট:

LocalDateTime: 2024-12-23T14:45:00
Instant from LocalDateTime: 2024-12-23T09:15:00Z

ব্যাখ্যা:

  • LocalDateTime.atZone(ZoneId.of("Asia/Kolkata")): এটি LocalDateTime কে Asia/Kolkata সময় অঞ্চলের সাথে ZonedDateTime এ রূপান্তরিত করেছে।
  • toInstant(): পরে ZonedDateTime থেকে Instant তৈরি করা হয়েছে।

  • Instant থেকে ZonedDateTime বা LocalDateTime এ রূপান্তর করতে, আপনি atZone() ব্যবহার করে সময় অঞ্চল যুক্ত করতে পারেন এবং তারপর toLocalDateTime() বা toInstant() ব্যবহার করে প্রয়োজনীয় রূপান্তর করতে পারেন।
  • ZonedDateTime সময় অঞ্চল সহ স্থানীয় সময় ধারণ করে, যেখানে LocalDateTime কেবলমাত্র সময় এবং তারিখ ধারণ করে (কোনো সময় অঞ্চল ছাড়াই)।
Content added By

উদাহরণ সহ Instant Class ব্যবহার

87
87

Instant ক্লাসটি Java 8 তে java.time প্যাকেজে অন্তর্ভুক্ত হয়েছে এবং এটি UTC (Coordinated Universal Time) টাইম স্ট্যাম্পের একটি নির্দিষ্ট মুহূর্ত (epoch time) প্রতিনিধিত্ব করে। এটি অত্যন্ত সঠিক সময়ের মান প্রদান করে, যা সময়সীমার নির্দিষ্ট মুহূর্ত (milliseconds বা nanoseconds) হিসেবে স্টোর হয়। Instant সাধারণত time-based calculations এবং timestamps তৈরি করতে ব্যবহৃত হয়, যেখানে সময় অঞ্চল (time zone) বা সময়ের পার্থক্য কোনও ভূমিকা রাখে না।

Instant ক্লাসের প্রধান বৈশিষ্ট্য:

  1. Instant.now(): বর্তমান সময়ের Instant পাবেন (এটি UTC সময় অঞ্চল অনুসারে হবে)।
  2. Instant.ofEpochSecond(long epochSecond): epoch সেকেন্ড (1970-01-01T00:00:00Z থেকে শুরু) থেকে Instant তৈরি করবেন।
  3. Instant.ofEpochMilli(long epochMilli): epoch মিলিসেকেন্ড থেকে Instant তৈরি করবেন।
  4. plusSeconds(long seconds) এবং minusSeconds(long seconds): Instant এ সেকেন্ড যোগ বা বিয়োগ করা।

Instant ক্লাসের উদাহরণ সহ ব্যবহার:

1. Instant.now() - বর্তমান সময় পাওয়া:

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        // Get the current Instant (UTC time)
        Instant currentInstant = Instant.now();
        System.out.println("Current Instant: " + currentInstant);
    }
}

আউটপুট:

Current Instant: 2024-12-23T09:34:12.123456Z

ব্যাখ্যা:

  • Instant.now() মেথডটি বর্তমান UTC সময় (Coordinated Universal Time) দেয় এবং এটি সেকেন্ড এবং ন্যানোসেকেন্ড পর্যন্ত নির্ভুল হয়।

2. Instant.ofEpochSecond() - Epoch সেকেন্ড থেকে Instant তৈরি:

import java.time.Instant;

public class InstantEpochSecondExample {
    public static void main(String[] args) {
        // Create an Instant from epoch second (1970-01-01T00:00:00Z)
        Instant instantFromEpoch = Instant.ofEpochSecond(1609459200); // 2021-01-01T00:00:00Z
        System.out.println("Instant from epoch second: " + instantFromEpoch);
    }
}

আউটপুট:

Instant from epoch second: 2021-01-01T00:00:00Z

ব্যাখ্যা:

  • Instant.ofEpochSecond(1609459200) 1970-01-01T00:00:00Z থেকে 1609459200 সেকেন্ড পরের সময়কে একটি Instant এ পরিণত করে, যা 2021-01-01T00:00:00Z এর সমান।

3. Instant.ofEpochMilli() - Epoch মিলিসেকেন্ড থেকে Instant তৈরি:

import java.time.Instant;

public class InstantEpochMilliExample {
    public static void main(String[] args) {
        // Create an Instant from epoch milliseconds
        Instant instantFromEpochMilli = Instant.ofEpochMilli(1617235200000L); // 2021-04-01T00:00:00Z
        System.out.println("Instant from epoch milli: " + instantFromEpochMilli);
    }
}

আউটপুট:

Instant from epoch milli: 2021-04-01T00:00:00Z

ব্যাখ্যা:

  • Instant.ofEpochMilli(1617235200000L) 1970-01-01T00:00:00Z থেকে 1617235200000 মিলিসেকেন্ড পরের সময়কে Instant এ পরিণত করেছে, যা 2021-04-01T00:00:00Z এর সমান।

4. plusSeconds() এবং minusSeconds() - সেকেন্ড যোগ বা বিয়োগ করা:

import java.time.Instant;

public class InstantManipulationExample {
    public static void main(String[] args) {
        // Create an Instant for the current time
        Instant currentInstant = Instant.now();
        System.out.println("Current Instant: " + currentInstant);

        // Add 1000 seconds to the current time
        Instant instantPlus1000Sec = currentInstant.plusSeconds(1000);
        System.out.println("Instant after adding 1000 seconds: " + instantPlus1000Sec);

        // Subtract 1000 seconds from the current time
        Instant instantMinus1000Sec = currentInstant.minusSeconds(1000);
        System.out.println("Instant after subtracting 1000 seconds: " + instantMinus1000Sec);
    }
}

আউটপুট:

Current Instant: 2024-12-23T09:40:00.123456Z
Instant after adding 1000 seconds: 2024-12-23T09:56:40.123456Z
Instant after subtracting 1000 seconds: 2024-12-23T09:23:20.123456Z

ব্যাখ্যা:

  • plusSeconds(1000) মেথডটি বর্তমান Instant এর সাথে 1000 সেকেন্ড যোগ করে।
  • minusSeconds(1000) মেথডটি বর্তমান Instant থেকে 1000 সেকেন্ড বিয়োগ করে।

5. Duration দিয়ে দুটি Instant এর মধ্যে পার্থক্য বের করা:

import java.time.*;

public class InstantDurationExample {
    public static void main(String[] args) {
        // Create two Instant objects
        Instant start = Instant.now();
        Instant end = start.plusSeconds(5000); // Adding 5000 seconds to start

        // Calculate the duration between the two Instants
        Duration duration = Duration.between(start, end);
        System.out.println("Duration in seconds: " + duration.getSeconds());
    }
}

আউটপুট:

Duration in seconds: 5000

ব্যাখ্যা:

  • Duration.between(start, end) মেথডটি দুটি Instant এর মধ্যে সময়ের পার্থক্য বের করে, যা এখানে 5000 সেকেন্ড।
  • duration.getSeconds() এই পার্থক্যকে সেকেন্ডে রিটার্ন করে।

ZonedDateTime এবং Instant Comparison:

Instant এবং ZonedDateTime এর মধ্যে পার্থক্য হলো, Instant UTC (Universal Time) এর নির্দিষ্ট মুহূর্তকে নির্দেশ করে, যেখানে ZonedDateTime নির্দিষ্ট সময় অঞ্চল সহ তারিখ এবং সময় প্রতিনিধিত্ব করে।

যখন আপনি Instant ব্যবহার করেন, তখন আপনি সময় অঞ্চল থেকে মুক্ত থাকেন, কিন্তু ZonedDateTime ব্যবহার করলে আপনি সময় অঞ্চলকে মান্য করে সময়ের হিসাব করতে পারেন।


  • Instant ক্লাসটি UTC সময়ের নির্দিষ্ট মুহূর্ত (epoch time) ধারণ করে এবং এটি সেকেন্ড ও ন্যানোসেকেন্ড পর্যন্ত নির্ভুল।
  • Instant ব্যবহার করে আপনি সময়ের পার্থক্য বের করতে পারেন, সময়ের যোগ-বিয়োগ করতে পারেন এবং সময়সীমার একটি নির্দিষ্ট মুহূর্ত তৈরি করতে পারেন।
  • ZonedDateTime এর সঙ্গে তুলনা করলে, Instant কোনও নির্দিষ্ট সময় অঞ্চলের সাথে সম্পর্কিত নয়, তবে এটি সার্বজনীন (UTC) সময়ের একটি নির্দিষ্ট মুহূর্ত নির্দেশ করে।
Content added By
Promotion